var express = require('express')

var bodyParser = require('body-parser')

var session = require('express-session')

var path = require('path')

var router = require('./router')

var app = express()

app.use('/public/', express.static(path.join(__dirname, './public/')))

app.use('/node_modules/', express.static(path.join(__dirname, './node_modules/')))

// 在 Node 中，有很多第三方模板引擎都可以使用，不是只有 art-template
app.engine('html', require('express-art-template'))

app.set('views', path.join(__dirname, './views/'))

// 配置解析表单 POST 请求体插件（注意：一定要在 app.use(router) 之前 ）
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))

// parse application/json
app.use(bodyParser.json())

// 在 Express 这个框架中，默认不支持 Session 和 Cookie
// 但是我们可以使用第三方中间件：express-session 来解决
// 1. npm install express-session
// 2. 配置 (一定要在 app.use(router) 之前)
// 3. 使用
//    当把这个插件配置好之后，我们就可以通过 req.session 来发访问和设置 Session 成员了
//    添加 Session 数据：req.session.foo = 'bar'
//    访问 Session 数据：req.session.foo
app.use(session({
	secret: 'keyboard cat',
	resave: false,
	saveUninitialized: true
}))

// 把路由挂载到 app 中
app.use(router)

// 配置一个处理 404 的中间件
app.use(function(req, res){
	res.render('404.html')
})

// 配置一个全局错误处理中间件
app.use(function(err, req, res, next){
	res.status(500).json({
		err_code:500,
		err_msg:err.message
	})
})

app.listen(3000, function(){
	console.log('server running 3000.')
})